package com.pine.app.module.security.oauth.provider.client;

import java.io.Serializable;
import java.util.Map;
import java.util.Set;

/**
 * @program: pine-security
 * @description:  客户端信息
 * @author: xyjxust
 * @create: 2019-09-05 22:01
 **/
public interface ClientDetails extends Serializable {

    /** 
      * @Description: 获取客户端id
      * @Param:  
      * @return:  
      * @Author: xyjxust 
      * @Date: 2019/9/5 
      */ 
    String getClientId();
    /** 
      * @Description: 获取资源id集合
      * @Param:  
      * @return:  
      * @Author: xyjxust 
      * @Date: 2019/9/5 
      */
    Set<String> getResources();
    /** 
      * @Description: 判断是否需要密钥
      * @Param:  
      * @return:  
      * @Author: xyjxust 
      * @Date: 2019/9/5 
      */ 
    boolean isSecretRequired();
    /** 
      * @Description: 获取客户端密钥 
      * @Param:  
      * @return:  
      * @Author: xyjxust 
      * @Date: 2019/9/5 
      */ 
    String getClientSecret();
    /** 
      * @Description: 是否有授权范围
      * @Param:
      * @return:
      * @Author: xyjxust 
      * @Date: 2019/9/5 
      */ 
    boolean isScoped();
    /**
      * @Description: 获取授权范围
      * @Param:
      * @return:
      * @Author: xyjxust
      * @Date: 2019/9/5
      */ 

    Set<String> getScope();
    
    /** 
      * @Description: 获取授权类型集合
      * @Param:
      * @return:
      * @Author: xyjxust 
      * @Date: 2019/9/5 
      */ 

    Set<String> getAuthorizedGrantTypes();
     /**
       * @Description: 获取注册的跳转url
       * @Param:
       * @return:
       * @Author: xyjxust
       * @Date: 2019/9/5
       */
    Set<String> getRegisteredRedirectUri();
    /** 
      * @Description: 获取授权
      * @Param:  
      * @return:  
      * @Author: xyjxust 
      * @Date: 2019/9/5 
      */
    Set<String> getRoles();
    /**
      * @Description: 获取accessToken的校验时间
      * @Param:
      * @return:
      * @Author: xyjxust
      * @Date: 2019/9/5
      */
    Integer getAccessTokenValiditySeconds();
    /**
     * @Description: 获取RefreshToken的校验时间
     * @Param:
     * @return:
     * @Author: xyjxust
     * @Date: 2019/9/5
     */
    Integer getRefreshTokenValiditySeconds();

    boolean isAutoApprove(String var1);

    Map<String, Object> getAdditionalInformation();

    String getClientName();

    boolean isExpiredTime();
}
